package com.xunk.system.mapper;


import com.xunk.system.domain.SysDevice;
import com.xunk.system.vo.SysDeviceBaseVO;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

/**
 * 设备Mapper接口
 *
 * @author ruoyi
 * @date 2021-03-17
 */
public interface SysDeviceMapper {
    /**
     * 查询设备
     *
     * @param deviceSn 设备ID
     * @return 设备
     */
    public SysDevice selectSysDeviceById(String deviceSn);

    /**
     * 查询设备列表
     *
     * @param sysDevice 设备
     * @return 设备集合
     */
    public List<SysDevice> selectSysDeviceList(SysDevice sysDevice);

    /**
     * 新增设备
     *
     * @param sysDevice 设备
     * @return 结果
     */
    public int insertSysDevice(SysDevice sysDevice);

    /**
     * 修改设备
     *
     * @param sysDevice 设备
     * @return 结果
     */
    public int updateSysDevice(SysDevice sysDevice);

    /**
     * 删除设备
     *
     * @param deviceSn 设备ID
     * @return 结果
     */
    public int deleteSysDeviceById(String deviceSn);

    public int deleteSysDeviceByGatewayId(@Param("gatewaySn") String gatewaySn, @Param("supplier") String supplier);

    /**
     * 批量删除设备
     *
     * @param deviceSns 需要删除的数据ID
     * @return 结果
     */
    public int deleteSysDeviceByIds(String[] deviceSns);

    /**
     * 根据设备ID查询是否存在未删除的设备
     *
     * @param deviceSn 设备ID
     * @return 结果
     */
    public int selectExistsSysDeviceById(String deviceSn);

    List<SysDeviceBaseVO> selectDeviceInfoByHomeId(@Param("trigger") String trigger, @Param("homeId") Long homeId);

    List<HashMap<Long, Long>> countDeviceByBaseId(@Param("baseIds") List<Long> baseIds);

    List<String> listChildDeviceSnsByParentSn(@Param("parentSn")String parentSn);
}
